package com.tac.controller;

import com.tac.common.result.Result;
import com.tac.pojo.Product;
import com.tac.pojo.vo.Page;
import com.tac.service.ProductService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/product")
@CrossOrigin
@Api(value = "商品",tags ="商品" )
public class ProductController {
    @Autowired
    private ProductService productService;
    /**
     * 添加商品   图片还没有处理
     * @param product
     * @return
     */
    @ApiOperation("添加商品")
    @PostMapping("insert")
    public Result insert(@RequestBody Product product){
       return productService.insert(product);
    }
    /**
     * 根据id删除商品
     * @param id
     * @return
     */
    @ApiOperation("根据id删除商品")
    @DeleteMapping("/remove")
    public Result remove(Integer id){
        return productService.remove(id);
    }


    /**
     * 修改商品
     * @param product
     * @return
     */
    @ApiOperation("修改商品")
    @PutMapping("/updateById")
    public Result updateById(@RequestBody Product product){
       return productService.updateById(product);
    }
    /**
     * 根据id查询商品
     * @param id
     * @return
     */
    @ApiOperation("根据id查询商品")
    @GetMapping("/selectById")
    public Result<Product>  selectById(Integer id){
        return productService.selectById(id);
    }
    /**
     * 查询所有
     * @return
     */
    @ApiOperation("查询所有")
    @GetMapping("/selectAll")
    public Result<Page<List<Product>>>  selectAll(int page, int limit){
        Result<Page<List<Product>>> pageResult = productService.selectAll(page, limit);
        return pageResult;
    }
    /**
     * 根据分类查询商品
     * @param cid
     * @return
     */
    @ApiOperation("根据分类查询商品")
    @GetMapping("/selectAllByCategoryId")
    public Result<Page<List<Product>>> selectAllByCategoryId(Integer cid,int page, int limit){
        Result<Page<List<Product>>> pageResult = productService.selectAllByCategoryId(cid, page, limit);
        return pageResult;
    }
    /**
     * 按名称模糊查询商品分页
     * @param name
     * @param page
     * @param limit
     * @return
     */
    @ApiOperation("按名称模糊查询商品分页")
    @GetMapping("/selectByName")
    public Result<Page<List<Product>>> selectByName(String name, int page, int limit){
        return productService.selectByName(name,page,limit);
    }
}
